<!-- saved from url=(0067)https://img.atcoder.jp/ahc002/e5b2b399792299b5b35543c219e89601.html -->
<html lang="zh-cn">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>

    <style type="text/css">
        .swal-icon--error {
            border-color: #f27474;
            -webkit-animation: animateErrorIcon .5s;
            animation: animateErrorIcon .5s
        }

        .swal-icon--error__x-mark {
            position: relative;
            display: block;
            -webkit-animation: animateXMark .5s;
            animation: animateXMark .5s
        }

        .swal-icon--error__line {
            position: absolute;
            height: 5px;
            width: 47px;
            background-color: #f27474;
            display: block;
            top: 37px;
            border-radius: 2px
        }

        .swal-icon--error__line--left {
            -webkit-transform: rotate(45deg);
            transform: rotate(45deg);
            left: 17px
        }

        .swal-icon--error__line--right {
            -webkit-transform: rotate(-45deg);
            transform: rotate(-45deg);
            right: 16px
        }

        @-webkit-keyframes animateErrorIcon {
            0% {
                -webkit-transform: rotateX(100deg);
                transform: rotateX(100deg);
                opacity: 0
            }

            to {
                -webkit-transform: rotateX(0deg);
                transform: rotateX(0deg);
                opacity: 1
            }
        }

        @keyframes animateErrorIcon {
            0% {
                -webkit-transform: rotateX(100deg);
                transform: rotateX(100deg);
                opacity: 0
            }

            to {
                -webkit-transform: rotateX(0deg);
                transform: rotateX(0deg);
                opacity: 1
            }
        }

        @-webkit-keyframes animateXMark {
            0% {
                -webkit-transform: scale(.4);
                transform: scale(.4);
                margin-top: 26px;
                opacity: 0
            }

            50% {
                -webkit-transform: scale(.4);
                transform: scale(.4);
                margin-top: 26px;
                opacity: 0
            }

            80% {
                -webkit-transform: scale(1.15);
                transform: scale(1.15);
                margin-top: -6px
            }

            to {
                -webkit-transform: scale(1);
                transform: scale(1);
                margin-top: 0;
                opacity: 1
            }
        }

        @keyframes animateXMark {
            0% {
                -webkit-transform: scale(.4);
                transform: scale(.4);
                margin-top: 26px;
                opacity: 0
            }

            50% {
                -webkit-transform: scale(.4);
                transform: scale(.4);
                margin-top: 26px;
                opacity: 0
            }

            80% {
                -webkit-transform: scale(1.15);
                transform: scale(1.15);
                margin-top: -6px
            }

            to {
                -webkit-transform: scale(1);
                transform: scale(1);
                margin-top: 0;
                opacity: 1
            }
        }

        .swal-icon--warning {
            border-color: #f8bb86;
            -webkit-animation: pulseWarning .75s infinite alternate;
            animation: pulseWarning .75s infinite alternate
        }

        .swal-icon--warning__body {
            width: 5px;
            height: 47px;
            top: 10px;
            border-radius: 2px;
            margin-left: -2px
        }

        .swal-icon--warning__body,
        .swal-icon--warning__dot {
            position: absolute;
            left: 50%;
            background-color: #f8bb86
        }

        .swal-icon--warning__dot {
            width: 7px;
            height: 7px;
            border-radius: 50%;
            margin-left: -4px;
            bottom: -11px
        }

        @-webkit-keyframes pulseWarning {
            0% {
                border-color: #f8d486
            }

            to {
                border-color: #f8bb86
            }
        }

        @keyframes pulseWarning {
            0% {
                border-color: #f8d486
            }

            to {
                border-color: #f8bb86
            }
        }

        .swal-icon--success {
            border-color: #a5dc86
        }

        .swal-icon--success:after,
        .swal-icon--success:before {
            content: "";
            border-radius: 50%;
            position: absolute;
            width: 60px;
            height: 120px;
            background: #fff;
            -webkit-transform: rotate(45deg);
            transform: rotate(45deg)
        }

        .swal-icon--success:before {
            border-radius: 120px 0 0 120px;
            top: -7px;
            left: -33px;
            -webkit-transform: rotate(-45deg);
            transform: rotate(-45deg);
            -webkit-transform-origin: 60px 60px;
            transform-origin: 60px 60px
        }

        .swal-icon--success:after {
            border-radius: 0 120px 120px 0;
            top: -11px;
            left: 30px;
            -webkit-transform: rotate(-45deg);
            transform: rotate(-45deg);
            -webkit-transform-origin: 0 60px;
            transform-origin: 0 60px;
            -webkit-animation: rotatePlaceholder 4.25s ease-in;
            animation: rotatePlaceholder 4.25s ease-in
        }

        .swal-icon--success__ring {
            width: 80px;
            height: 80px;
            border: 4px solid hsla(98, 55%, 69%, .2);
            border-radius: 50%;
            box-sizing: content-box;
            position: absolute;
            left: -4px;
            top: -4px;
            z-index: 2
        }

        .swal-icon--success__hide-corners {
            width: 5px;
            height: 90px;
            background-color: #fff;
            padding: 1px;
            position: absolute;
            left: 28px;
            top: 8px;
            z-index: 1;
            -webkit-transform: rotate(-45deg);
            transform: rotate(-45deg)
        }

        .swal-icon--success__line {
            height: 5px;
            background-color: #a5dc86;
            display: block;
            border-radius: 2px;
            position: absolute;
            z-index: 2
        }

        .swal-icon--success__line--tip {
            width: 25px;
            left: 14px;
            top: 46px;
            -webkit-transform: rotate(45deg);
            transform: rotate(45deg);
            -webkit-animation: animateSuccessTip .75s;
            animation: animateSuccessTip .75s
        }

        .swal-icon--success__line--long {
            width: 47px;
            right: 8px;
            top: 38px;
            -webkit-transform: rotate(-45deg);
            transform: rotate(-45deg);
            -webkit-animation: animateSuccessLong .75s;
            animation: animateSuccessLong .75s
        }

        @-webkit-keyframes rotatePlaceholder {
            0% {
                -webkit-transform: rotate(-45deg);
                transform: rotate(-45deg)
            }

            5% {
                -webkit-transform: rotate(-45deg);
                transform: rotate(-45deg)
            }

            12% {
                -webkit-transform: rotate(-405deg);
                transform: rotate(-405deg)
            }

            to {
                -webkit-transform: rotate(-405deg);
                transform: rotate(-405deg)
            }
        }

        @keyframes rotatePlaceholder {
            0% {
                -webkit-transform: rotate(-45deg);
                transform: rotate(-45deg)
            }

            5% {
                -webkit-transform: rotate(-45deg);
                transform: rotate(-45deg)
            }

            12% {
                -webkit-transform: rotate(-405deg);
                transform: rotate(-405deg)
            }

            to {
                -webkit-transform: rotate(-405deg);
                transform: rotate(-405deg)
            }
        }

        @-webkit-keyframes animateSuccessTip {
            0% {
                width: 0;
                left: 1px;
                top: 19px
            }

            54% {
                width: 0;
                left: 1px;
                top: 19px
            }

            70% {
                width: 50px;
                left: -8px;
                top: 37px
            }

            84% {
                width: 17px;
                left: 21px;
                top: 48px
            }

            to {
                width: 25px;
                left: 14px;
                top: 45px
            }
        }

        @keyframes animateSuccessTip {
            0% {
                width: 0;
                left: 1px;
                top: 19px
            }

            54% {
                width: 0;
                left: 1px;
                top: 19px
            }

            70% {
                width: 50px;
                left: -8px;
                top: 37px
            }

            84% {
                width: 17px;
                left: 21px;
                top: 48px
            }

            to {
                width: 25px;
                left: 14px;
                top: 45px
            }
        }

        @-webkit-keyframes animateSuccessLong {
            0% {
                width: 0;
                right: 46px;
                top: 54px
            }

            65% {
                width: 0;
                right: 46px;
                top: 54px
            }

            84% {
                width: 55px;
                right: 0;
                top: 35px
            }

            to {
                width: 47px;
                right: 8px;
                top: 38px
            }
        }

        @keyframes animateSuccessLong {
            0% {
                width: 0;
                right: 46px;
                top: 54px
            }

            65% {
                width: 0;
                right: 46px;
                top: 54px
            }

            84% {
                width: 55px;
                right: 0;
                top: 35px
            }

            to {
                width: 47px;
                right: 8px;
                top: 38px
            }
        }

        .swal-icon--info {
            border-color: #c9dae1
        }

        .swal-icon--info:before {
            width: 5px;
            height: 29px;
            bottom: 17px;
            border-radius: 2px;
            margin-left: -2px
        }

        .swal-icon--info:after,
        .swal-icon--info:before {
            content: "";
            position: absolute;
            left: 50%;
            background-color: #c9dae1
        }

        .swal-icon--info:after {
            width: 7px;
            height: 7px;
            border-radius: 50%;
            margin-left: -3px;
            top: 19px
        }

        .swal-icon {
            width: 80px;
            height: 80px;
            border-width: 4px;
            border-style: solid;
            border-radius: 50%;
            padding: 0;
            position: relative;
            box-sizing: content-box;
            margin: 20px auto
        }

        .swal-icon:first-child {
            margin-top: 32px
        }

        .swal-icon--custom {
            width: auto;
            height: auto;
            max-width: 100%;
            border: none;
            border-radius: 0
        }

        .swal-icon img {
            max-width: 100%;
            max-height: 100%
        }

        .swal-title {
            color: rgba(0, 0, 0, .65);
            font-weight: 600;
            text-transform: none;
            position: relative;
            display: block;
            padding: 13px 16px;
            font-size: 27px;
            line-height: normal;
            text-align: center;
            margin-bottom: 0
        }

        .swal-title:first-child {
            margin-top: 26px
        }

        .swal-title:not(:first-child) {
            padding-bottom: 0
        }

        .swal-title:not(:last-child) {
            margin-bottom: 13px
        }

        .swal-text {
            font-size: 16px;
            position: relative;
            float: none;
            line-height: normal;
            vertical-align: top;
            text-align: left;
            display: inline-block;
            margin: 0;
            padding: 0 10px;
            font-weight: 400;
            color: rgba(0, 0, 0, .64);
            max-width: calc(100% - 20px);
            overflow-wrap: break-word;
            box-sizing: border-box
        }

        .swal-text:first-child {
            margin-top: 45px
        }

        .swal-text:last-child {
            margin-bottom: 45px
        }

        .swal-footer {
            text-align: right;
            padding-top: 13px;
            margin-top: 13px;
            padding: 13px 16px;
            border-radius: inherit;
            border-top-left-radius: 0;
            border-top-right-radius: 0
        }

        .swal-button-container {
            margin: 5px;
            display: inline-block;
            position: relative
        }

        .swal-button {
            background-color: #7cd1f9;
            color: #fff;
            border: none;
            box-shadow: none;
            border-radius: 5px;
            font-weight: 600;
            font-size: 14px;
            padding: 10px 24px;
            margin: 0;
            cursor: pointer
        }

        .swal-button:not([disabled]):hover {
            background-color: #78cbf2
        }

        .swal-button:active {
            background-color: #70bce0
        }

        .swal-button:focus {
            outline: none;
            box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(43, 114, 165, .29)
        }

        .swal-button[disabled] {
            opacity: .5;
            cursor: default
        }

        .swal-button::-moz-focus-inner {
            border: 0
        }

        .swal-button--cancel {
            color: #555;
            background-color: #efefef
        }

        .swal-button--cancel:not([disabled]):hover {
            background-color: #e8e8e8
        }

        .swal-button--cancel:active {
            background-color: #d7d7d7
        }

        .swal-button--cancel:focus {
            box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(116, 136, 150, .29)
        }

        .swal-button--danger {
            background-color: #e64942
        }

        .swal-button--danger:not([disabled]):hover {
            background-color: #df4740
        }

        .swal-button--danger:active {
            background-color: #cf423b
        }

        .swal-button--danger:focus {
            box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(165, 43, 43, .29)
        }

        .swal-content {
            padding: 0 20px;
            margin-top: 20px;
            font-size: medium
        }

        .swal-content:last-child {
            margin-bottom: 20px
        }

        .swal-content__input,
        .swal-content__textarea {
            -webkit-appearance: none;
            background-color: #fff;
            border: none;
            font-size: 14px;
            display: block;
            box-sizing: border-box;
            width: 100%;
            border: 1px solid rgba(0, 0, 0, .14);
            padding: 10px 13px;
            border-radius: 2px;
            transition: border-color .2s
        }

        .swal-content__input:focus,
        .swal-content__textarea:focus {
            outline: none;
            border-color: #6db8ff
        }

        .swal-content__textarea {
            resize: vertical
        }

        .swal-button--loading {
            color: transparent
        }

        .swal-button--loading~.swal-button__loader {
            opacity: 1
        }

        .swal-button__loader {
            position: absolute;
            height: auto;
            width: 43px;
            z-index: 2;
            left: 50%;
            top: 50%;
            -webkit-transform: translateX(-50%) translateY(-50%);
            transform: translateX(-50%) translateY(-50%);
            text-align: center;
            pointer-events: none;
            opacity: 0
        }

        .swal-button__loader div {
            display: inline-block;
            float: none;
            vertical-align: baseline;
            width: 9px;
            height: 9px;
            padding: 0;
            border: none;
            margin: 2px;
            opacity: .4;
            border-radius: 7px;
            background-color: hsla(0, 0%, 100%, .9);
            transition: background .2s;
            -webkit-animation: swal-loading-anim 1s infinite;
            animation: swal-loading-anim 1s infinite
        }

        .swal-button__loader div:nth-child(3n+2) {
            -webkit-animation-delay: .15s;
            animation-delay: .15s
        }

        .swal-button__loader div:nth-child(3n+3) {
            -webkit-animation-delay: .3s;
            animation-delay: .3s
        }

        @-webkit-keyframes swal-loading-anim {
            0% {
                opacity: .4
            }

            20% {
                opacity: .4
            }

            50% {
                opacity: 1
            }

            to {
                opacity: .4
            }
        }

        @keyframes swal-loading-anim {
            0% {
                opacity: .4
            }

            20% {
                opacity: .4
            }

            50% {
                opacity: 1
            }

            to {
                opacity: .4
            }
        }

        .swal-overlay {
            position: fixed;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            text-align: center;
            font-size: 0;
            overflow-y: auto;
            background-color: rgba(0, 0, 0, .4);
            z-index: 10000;
            pointer-events: none;
            opacity: 0;
            transition: opacity .3s
        }

        .swal-overlay:before {
            content: " ";
            display: inline-block;
            vertical-align: middle;
            height: 100%
        }

        .swal-overlay--show-modal {
            opacity: 1;
            pointer-events: auto
        }

        .swal-overlay--show-modal .swal-modal {
            opacity: 1;
            pointer-events: auto;
            box-sizing: border-box;
            -webkit-animation: showSweetAlert .3s;
            animation: showSweetAlert .3s;
            will-change: transform
        }

        .swal-modal {
            width: 478px;
            opacity: 0;
            pointer-events: none;
            background-color: #fff;
            text-align: center;
            border-radius: 5px;
            position: static;
            margin: 20px auto;
            display: inline-block;
            vertical-align: middle;
            -webkit-transform: scale(1);
            transform: scale(1);
            -webkit-transform-origin: 50% 50%;
            transform-origin: 50% 50%;
            z-index: 10001;
            transition: opacity .2s, -webkit-transform .3s;
            transition: transform .3s, opacity .2s;
            transition: transform .3s, opacity .2s, -webkit-transform .3s
        }

        @media (max-width:500px) {
            .swal-modal {
                width: calc(100% - 20px)
            }
        }

        @-webkit-keyframes showSweetAlert {
            0% {
                -webkit-transform: scale(1);
                transform: scale(1)
            }

            1% {
                -webkit-transform: scale(.5);
                transform: scale(.5)
            }

            45% {
                -webkit-transform: scale(1.05);
                transform: scale(1.05)
            }

            80% {
                -webkit-transform: scale(.95);
                transform: scale(.95)
            }

            to {
                -webkit-transform: scale(1);
                transform: scale(1)
            }
        }

        @keyframes showSweetAlert {
            0% {
                -webkit-transform: scale(1);
                transform: scale(1)
            }

            1% {
                -webkit-transform: scale(.5);
                transform: scale(.5)
            }

            45% {
                -webkit-transform: scale(1.05);
                transform: scale(1.05)
            }

            80% {
                -webkit-transform: scale(.95);
                transform: scale(.95)
            }

            to {
                -webkit-transform: scale(1);
                transform: scale(1)
            }
        }
    </style>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>TesutoHime · Visualizer</title>
    <link href="http://acm.sjtu.edu.cn/OnlineJudge/static/lib/bootstrap.min.css" rel="stylesheet">
    <link href="http://acm.sjtu.edu.cn/OnlineJudge/static/style.css" rel="stylesheet">
    <title>Visualizer</title>
</head>

<body class="bg-secondary">
    <nav class="navbar navbar-expand-lg navbar-dark bg-primary py-2 mb-3">
        <div class="container">
            <a class="navbar-brand" href="https://oj.yukisaki.cn/">ACM Class OnlineJudge 2020</a>
            <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarContent">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse" id="navbarContent">
                <div class="navbar-collapse-header">
                    <div class="row">
                        <div class="col-10 collapse-brand">
                            <a href="/">ACM Class OnlineJudge 2020</a>
                        </div>
                        <div class="col-2 collapse-close">
                            <button type="button" class="navbar-toggler collapsed" data-toggle="collapse"
                                data-target="#navbarContent">
                                <span></span>
                                <span></span>
                            </button>
                        </div>
                    </div>
                </div>
                <ul class="navbar-nav" style="line-height: 1;">
                    <li class="nav-item"><a href="https://oj.yukisaki.cn/problems" class="nav-link">题库</a></li>
                    <li class="nav-item"><a href="https://oj.yukisaki.cn/contest" class="nav-link">比赛</a></li>
                    <li class="nav-item"><a href="https://oj.yukisaki.cn/homework" class="nav-link">作业</a></li>
                    <li class="nav-item"><a href="https://oj.yukisaki.cn/status" class="nav-link">评测状态</a></li>
                    <li class="nav-item"><a href="https://oj.yukisaki.cn/about" class="nav-link">关于</a></li>

                </ul>
            </div>
        </div>
    </nav>
    <main class="container">
        <div class="jumbotron bg-white">
            <h1>TesutoHime · Visualizer</h1>
            <br>

            这里是 PPCA 2021 所有创新综合应用题（B卷）所需要用到的可视化工具的合集。你可以使用这些小工具，来帮助你打开新的解题思路，或者验证你原有代码真正的运行效果。

            <br>
            <br>
            <p>如果你发现了任何 BUG，请尽快联系助教进行修复，不胜感激！</p>

            <hr class="my-4">

            


            <div class="card-columns">
                <div class="card p-3 text-center">
                    <div class="card-body">
                        <h4 class="card-title">PPCA第一次机考 </h4>
                        <p class="card-text">这里有来自主站中第一次机考需要的可视化工具以及下发文件</p>
                        <p class="card-text">需要和 1258 配套使用</p>
                        <hr class="my-4">
                        <p class="card-text"><input type="password" style="text-align:center;" value="R63p^McI" id="pwd0" class="form-control"></p>
                        <p class="card-text"><label class="btn btn-default" onclick="passwordChecker(0)">ENTER</label>
                        </p>
                        <p class="card-text"><small class="text-muted">本小工具最后更新于 7 月 7 日</small></p>
                    </div>
                </div>

                

                <div class="card p-3 text-center ">
                    <div class="card-body">
                        <h4 class="card-title">PPCA第二次机考</h4>
                        <p class="card-text">这里有来自主站中第二次机考需要的可视化工具以及下发文件</p>
                        <hr class="my-4">
                        <p class="card-text"><a class="btn btn-info" href="https://anoxiacxy-1256564208.cos.ap-nanjing.myqcloud.com/PPCA2021/PPCA%E7%AC%AC%E4%BA%8C%E6%AC%A1%E6%9C%BA%E8%80%83%E4%B8%8B%E5%8F%91%E6%96%87%E4%BB%B6.zip">Download</a></p>
                        
                        <hr class="my-4">
                        <p class="card-text"><input type="password" style="text-align:center;" value="8ZTcW$Gg" id="pwd1" class="form-control"></p>
                        <p class="card-text"><label class="btn btn-default" onclick="passwordChecker(1)">ENTER</label></p>
                        <p class="card-text"><small class="text-muted">本小工具最后更新于 7 月 15 日</small></p>
                        <!--p class="card-text"><small class="text-muted">助教还在出题，请耐心等待……</small></p-->
                    </div>
                </div>



                <div class="card p-3 text-center ">
                    <div class="card-body">
                        <h4 class="card-title">PPCA第三次机考</h4>
                        <p class="card-text">这里有来自主站中第三次机考需要的下发文件</p>
                        <hr class="my-4">
                        <p class="card-text"><a class="btn btn-info" href="https://anoxiacxy-1256564208.cos.ap-nanjing.myqcloud.com/PPCA2021/PPCA%E7%AC%AC%E4%B8%89%E6%AC%A1%E6%9C%BA%E8%80%83%E4%B8%8B%E5%8F%91%E6%96%87%E4%BB%B6.zip">Download</a></p>
                        <p class="card-text">请尽量在机考前下载附件内容</p>
                        <p class="card-text">机考密码会在开考之后发放，可用于解压附件，这次无小工具</p>
                        
                        <!--hr class="my-4">
                        <p class="card-text"><input type="password" style="text-align:center;" value="8ZTcW$Gg" id="pwd1" class="form-control"></p>
                        <p class="card-text"><label class="btn btn-default" onclick="passwordChecker(1)">ENTER</label></p-->
                        <p class="card-text"><small class="text-muted">本小工具最后更新于 7 月 22 日</small></p>
                        <!--p class="card-text"><small class="text-muted">助教还在出题，请耐心等待……</small></p-->
                    </div>
                </div>


                <div class="card p-3 text-center">
                    <div class="card-body">
                        <h4 class="card-title">PPCA第四次机考</h4>
                        <p class="card-text">这里有来自主站中第四次机考需要的下发文件</p>
                        <hr class="my-4">
                        <p class="card-text"><a class="btn btn-info" href="https://anoxiacxy-1256564208.cos.ap-nanjing.myqcloud.com/PPCA2021/PPCA%E7%AC%AC%E5%9B%9B%E6%AC%A1%E6%9C%BA%E8%80%83%E4%B8%8B%E5%8F%91%E6%96%87%E4%BB%B6.zip">Download</a></p>
                        <p class="card-text">请尽量在机考前下载附件内容</p>
                        <p class="card-text">机考密码会在开考之后发放，可用于解压附件，这次无小工具</p>
                        
                        <!--hr class="my-4">
                        <p class="card-text"><input type="password" style="text-align:center;" value="8ZTcW$Gg" id="pwd1" class="form-control"></p>
                        <p class="card-text"><label class="btn btn-default" onclick="passwordChecker(1)">ENTER</label></p-->
                        <p class="card-text"><small class="text-muted">本小工具最后更新于 7 月 29 日</small></p>
                        <!--p class="card-text"><small class="text-muted">助教还在出题，请耐心等待……</small></p-->
                    </div>
                </div>

                <div class="card p-3 text-center bg-secondary">
                    <div class="card-body">
                        <h4 class="card-title">PPCA第五次机考</h4>
                        <p class="card-text">这里有来自主站中第五次机考需要的下发文件</p>
                        <hr class="my-4">
                        <p class="card-text"><a class="btn btn-info" href="https://anoxiacxy-1256564208.cos.ap-nanjing.myqcloud.com/PPCA2021/PPCA%E7%AC%AC%E4%BA%94%E6%AC%A1%E6%9C%BA%E8%80%83%E4%B8%8B%E5%8F%91%E6%96%87%E4%BB%B6.zip">Download</a></p>
                        <p class="card-text">请尽量在机考前下载附件内容</p>
                        <p class="card-text">机考密码会在开考之后发放，可用于解压附件，这次无小工具</p>
                        
                        <!--hr class="my-4">
                        <p class="card-text"><input type="password" style="text-align:center;" value="8ZTcW$Gg" id="pwd1" class="form-control"></p>
                        <p class="card-text"><label class="btn btn-default" onclick="passwordChecker(1)">ENTER</label></p-->
                        <p class="card-text"><small class="text-muted">本小工具最后更新于 8 月 05 日</small></p>
                        <!--p class="card-text"><small class="text-muted">助教还在出题，请耐心等待……</small></p-->
                    </div>
                </div>

                

                <!--div class="card p-3 text-center bg-secondary">
                    <div class="card-body">
                        <h4 class="card-title">PPCA第三次机考</h4>
                        <p class="card-text"><input type="password" style="text-align:center;" id="pwd2" class="form-control"></p>
                        <p class="card-text"><label class="btn btn-default" onclick="passwordChecker(2)">ENTER</label></p>
                        <p class="card-text"><small class="text-muted">助教还在出题，请耐心等待……</small></p>
                    </div>
                </div-->
                
                <!--div class="card p-3 text-center">
                    <div class="card-body">
                        <h4 class="card-title">PPCA第四次机考</h4>
                        <p class="card-text"><input type="password" id="pwd3" class="form-control"></p>
                        <p class="card-text"><label class="btn btn-default" onclick="passwordChecker(3)">ENTER</label></p>
                        <p class="card-text"><small class="text-muted">助教还在出题，请耐心等待……</small></p>
                    </div>
                </div>
                <div class="card p-3 text-center">
                    <div class="card-body">
                        <h4 class="card-title">PPCA第五次机考</h4>
                        <p class="card-text"><input type="password" id="pwd4" class="form-control"></p>
                        <p class="card-text"><label class="btn btn-default" onclick="passwordChecker(4)">ENTER</label></p>
                        <p class="card-text"><small class="text-muted">助教还在出题，请耐心等待……</small></p>
                    </div>
                </div-->
                
                <!--

                
                <div class="card p-3">
                    <blockquote class="blockquote mb-0 card-body">
                        <p>A well-known quote, contained in a blockquote element.</p>
                        <footer class="blockquote-footer">
                            <small class="text-muted">
                                Someone famous in <cite title="Source Title">Source Title</cite>
                            </small>
                        </footer>
                    </blockquote>
                </div>
                <div class="card bg-primary text-white text-center p-3">
                    <blockquote class="blockquote mb-0">
                        <p>A well-known quote, contained in a blockquote element.</p>
                        <footer class="blockquote-footer text-white">
                            <small>
                                Someone famous in <cite title="Source Title">Source Title</cite>
                            </small>
                        </footer>
                    </blockquote>
                </div>
                
                <div class="card p-3 text-right">
                    <blockquote class="blockquote mb-0">
                        <p>A well-known quote, contained in a blockquote element.</p>
                        <footer class="blockquote-footer">
                            <small class="text-muted">
                                Someone famous in <cite title="Source Title">Source Title</cite>
                            </small>
                        </footer>
                    </blockquote>
                </div>
                -->
            </div>
            <hr class="my-4">
        </div>
        <!-- 网页内容写在这里面 -->

        <!-- Modal -->

        </div>

    </main>
    <footer class="footer">
        <div class="container text-center">
            <p class="mb-0">
                ACM Class OnlineJudge © 2020 Powered By
                <a href="https://github.com/cmd2001/Open-TesutoHime/" target="_blank"> TesutoHime</a>
            </p>
            <p>
                备案号：<a href="https://beian.miit.gov.cn/#/Integrated/recordQuery" target="_blank">沪ICP备2020031263号-1</a>
            </p>
        </div>
    </footer>
</body>
<script src="http://acm.sjtu.edu.cn/OnlineJudge/static/lib/jquery.min.js"></script>
<script src="http://acm.sjtu.edu.cn/OnlineJudge/static/lib/popper.min.js"></script>
<script src="http://acm.sjtu.edu.cn/OnlineJudge/static/lib/bootstrap.min.js"></script>
<script src="http://acm.sjtu.edu.cn/OnlineJudge/static/lib/jquery.form.js"></script>
<script src="http://acm.sjtu.edu.cn/OnlineJudge/static/lib/sweetalert.min.js"></script>
<script src="http://acm.sjtu.edu.cn/OnlineJudge/static/lib/bootstrap-select.min.js"></script>

<script src="key.js"></script>
<script>
    function passwordChecker(index) {
        if (index >= ready_contest) {
            swal("Emmm", "助教还在出题，请耐心等待……", "warning");
            return;
        }
        var user_input = document.getElementById("pwd" + index).value;
        if (user_input == null || user_input.length == 0) {
            swal("Oops", "喵喵喵，你好像还没有输入密码。", "error");
            return;
        }
        console.log(user_input);
        var rst = "" + CryptoJS.HmacMD5(user_input, pwd);
        if (rst === md5[index]) {
            swal("Success", "验证通过！即将自动跳转到相关页面。", "success");
            setTimeout(function () {
                var url = CryptoJS.AES.decrypt(aes[index], user_input).toString(CryptoJS.enc.Utf8);
                console.log(url)
                window.location.href=url;
            }, 500);
        } else {
            swal("Oops", "密码错误，你还不可以使用这个模拟器。", "error");
        }
    }
</script>

</html>